﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	printf("arr		= %p\n", arr); //首元素的地址
//	printf("arr+1		= %p\n", arr + 1); // 跳4个字节
//	printf("&arr[0]		= %p\n", &arr[0]); //首元素的地址
//	printf("&arr[0]+1	= %p\n", &arr[0] + 1); //跳4个字节
//	printf("&arr		= %p\n", &arr); //数组的地址
//	printf("&arr+1		= %p\n", &arr + 1); //跳40个字节
//}


//int main()
//{
//	int arr[10] = { 0 };
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = arr; // 
//	for (i = 0; i < sz; i++)
//	{
//		scanf("%d", p + i);
//		//scanf("%d", arr+i);//也可以这样写
//	}
//	//输出
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p+i));
//	}
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 0 };
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = arr; // 
//	for (i = 0; i < sz; i++)
//	{
//		scanf("%d", p + i);
//		//scanf("%d", arr+i);//也可以这样写
//	}
//	//输出
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(arr + i));
//	}
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 0 };
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = arr; // 
//	for (i = 0; i < sz; i++)
//	{
//		scanf("%d", p + i);
//		//scanf("%d", arr+i);//也可以这样写
//	}
//	//输出
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(i+arr));
//	}
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 0 };
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = arr; // 
//	for (i = 0; i < sz; i++)
//	{
//		scanf("%d", p + i);
//		//scanf("%d", arr+i);//也可以这样写
//	}
//	//输出
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", i[arr]);
//	}
//	return 0;
//}

//int main()
//{
//	int arr[10] = { 0 };
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = arr; // 
//	for (i = 0; i < sz; i++)
//	{
//		scanf("%d", p + i);
//		//scanf("%d", arr+i);//也可以这样写
//	}
//	//输出
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", p[i]);
//	}
//	return 0;
//}

// 一维数组传参的本质
void test(int* arr,int sz) // 传的是首元素地址，用指针接收
{
	// x64 sizeof(arr) -> 8
	//int sz2 = sizeof(arr) / sizeof(arr[0]); // 在函数内 求参数部分数组的元素个数是错误的 他计算的是一个地址的大小 而不是一个数组的大小
	//printf("2:%d\n", sz2);
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]); // arr[i] -> *(arr+i)
	}
}
int main()
{
	int arr[10] = { 1,2, 3, 4, 5 , 6, 7, 8, 9, 10 };
	int sz1 = sizeof(arr) / sizeof(arr[0]);
	printf("1:%d\n", sz1);
	test(arr, sz1); // 数组传参 传的是一维数组
	return 0;
}